package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;

import classes.Proizvod;
import classes.Vrsta;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;

public class ProizvodDAO {
	@SuppressWarnings("unused")
	private final Connection c;
	private final PreparedStatement qInsert, qSelectAll, qDelete, qSelectProizvod;
	private static WebResource service;
	
	public ProizvodDAO(Connection c) throws Exception {
		this.c = c;
		qInsert= c.prepareStatement("INSERT INTO proizvod(naziv, vrsta) VALUES(?, ?)");
		qSelectAll = c.prepareStatement("SELECT * FROM proizvod");
		qDelete = c.prepareStatement("DELETE FROM proizvod WHERE idProizvod=?");
		qSelectProizvod = c.prepareStatement("SELECT * FROM proizvod WHERE idProizvod = ?");
	}
	
	public int insertProizvod(Proizvod p) throws Exception {
		if (p==null)
			throw new Exception("Nije moguce dodati nepostojeci proizvod!");
		
		try{
			qInsert.setString(1,p.getNaziv());
			qInsert.setInt(2, p.getVrsta().getIdVrsta());
			int a=qInsert.executeUpdate();
			return a;
		}
		catch(Exception ex){
			throw new Exception("Greska kod dodavanja vrste!");
		}
	}
	
	public Proizvod selectProizvod(int id) throws Exception{
		qSelectProizvod.setInt(1, id);
		ResultSet rs = qSelectProizvod.executeQuery();
		if(rs.next()==false)
			throw new Exception("Vratio null");
		Proizvod p = new Proizvod();
		p.setIdProizvod(rs.getInt("idProizvod"));
		p.setNaziv(rs.getString("naziv"));
		p.setVrsta(DAOFactory.getVrstaDAO().selectVrsta(rs.getInt("vrsta")));
		return p;
	}
	
	public List<Proizvod> selectSveProizvode() throws Exception{
		ResultSet rs = qSelectAll.executeQuery();
		List<Proizvod> proizvodi = new ArrayList<Proizvod>();
	//	ClientConfig config = new DefaultClientConfig();
	//    Client client = Client.create(config);
	//	service = client.resource(UriBuilder.fromUri("http://localhost:8080/eKupovina").build());
		while (rs.next()){
			Proizvod p= new Proizvod();
			p.setIdProizvod(rs.getInt("idProizvod"));
			p.setNaziv(rs.getString("naziv"));
		//	Vrsta vrsta= service.path("webservices").path("vrste").path("vrsta").path(rs.getString("Tip_idTip")).accept(MediaType.APPLICATION_XML).get(Vrsta.class);
			p.setVrsta(DAOFactory.getVrstaDAO().selectVrsta(rs.getInt("vrsta")));
			proizvodi.add(p);
		}
		return proizvodi;
	}

	public int deleteProizvod(int id) throws Exception {
		qDelete.setInt(1, id);
		return qDelete.executeUpdate();
	}




}
